Content Deployment, Scaling, and Telemetry

ABSTRACT

Techniques for content deployment, scaling and telemetry are described herein. Once a content item is made accessible for deployment, one or more instances of the content item may be installed as an image on a virtual machine instance. Additional instances of the content item may then be launched on the same virtual machine instance and/or by copying the image onto any number of additional virtual machine instances. One or more instances of a content item may be configurable to execute with multiple simultaneously assigned users sessions. Information associated with content item instances may be collected, such as a number of occupied user sessions, a number of unoccupied user sessions, content item instance duration, memory usage, and the like. This information may, in some cases, be used to match and assign authorized users to appropriate content item instances.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to the following applications, which arehereby incorporated by reference in their entirety: U.S. patentapplication Ser. No. ______, filed Mar. 17, 2015, entitled “CONTENTDEPLOYMENT, SCALING, AND TELEMETRY” (Attorney Docket Number:101058.000309); and U.S. patent application Ser. No. ______, filed Mar.17, 2015, entitled “CONTENT DEPLOYMENT, SCALING, AND TELEMETRY”(Attorney Docket Number: 101058.000314).

BACKGROUND

In recent years, the use of electronically presented content has becomeincreasingly popular and widespread. In some examples, certainelectronically presented content, such as multi-player games, may besimultaneously accessed and engaged by large numbers of different users.To make their content readily available to users, content developers areoften forced to become experts in server deployment and managementtechnologies that they would otherwise have no interest to invest in. Inparticular, many content developers would prefer to concentrate on thecreative aspects of the content that is being developed. Many contentdevelopers view server deployment and management as a distraction fromtheir core business of trying to create content, make it enjoyable, andship it on time. In addition to the time necessary to gain expertisewith server-based deployment and management systems, many contentdevelopers are often dissatisfied with other features of these systems.For example, many content developers are often dissatisfied with thelevel of feedback received from such systems regarding the operation anduse of their content. The availability of such feedback may often belimited and difficult to obtain.

BRIEF DESCRIPTION OF DRAWINGS

The following detailed description may be better understood when read inconjunction with the appended drawings. For the purposes ofillustration, there are shown in the drawings example embodiments ofvarious aspects of the disclosure; however, the invention is not limitedto the specific methods and instrumentalities disclosed.

FIG. 1 is a diagram illustrating an example content deployment, scalingand telemetry system that may be used in accordance with the presentdisclosure.

FIG. 2 is a diagram showing an example content scaling and executionsystem that may be used in accordance with the present disclosure.

FIG. 3 is a diagram illustrating an example telemetry informationrouting and processing system that may be used in accordance with thepresent disclosure.

FIG. 4 is a diagram illustrating an example content deployment andscaling process that may be used in accordance with the presentdisclosure.

FIG. 5 is a diagram illustrating an example process content execution inaccordance with the present disclosure.

FIG. 6 is a diagram illustrating an example telemetry informationrouting process that may be used in accordance with the presentdisclosure.

FIG. 7 is a diagram illustrating an example computing system that may beused in accordance with the present disclosure.

DETAILED DESCRIPTION

Techniques for content deployment, scaling and telemetry are describedherein. In some examples, a content developer or other party may providevarious types of electronically presented content items, such as videogames and other applications, for deployment to various users. In somecases, different versions of content, such as content that is beingtested and/or content that is fully developed, may be provided and madeavailable at the same or different times. In some examples, the contentmay be created using a software development kit (SDK) or other elementsthat are associated and/or integrated with various backend or otherservices or components that may host or otherwise interact with deployedinstances of the content item, such as a content item instanceinformation service, an instance interface, and/or content executioncomponents, which are each described in detail below. In these examples,the SDK or other elements may provide code and other functionalitybuilt-in to the content created by the developer that may, for example,allow ingestion, configuration, provisioning and deployment of thecontent to be more easily and rapidly accomplished, such as by allowingthe content to interact more efficiently with a multi-player videogaming or other multi-user environment. For example, an SDK used tocreate the content may assist in configuration of new user sessions forone or more users and collection of information about executing contentitem instances, such as a number of occupied user sessions, a number ofunoccupied user sessions, content item instance duration, memory usage,and the like.

In addition to the content itself, developers and other parties may alsoprovide information associated with identities of various users that areauthorized to use the content and, in some cases, respective contententitlements for various users. For example, if different builds and/orversions of content are available, different authorized users may beindicated for the different builds and/or versions. Once a content itemis made accessible for deployment, one or more instances of the contentitem may be installed as an image on a virtual machine instance.Additional instances of the content item may then be launched on thesame virtual machine instance and/or by copying the image onto anynumber of additional virtual machine instances. By way of these andother techniques, the content item may be made to available to largenumbers of users in a rapid, efficient, reliable and secure manner.

In some examples, the deployed content may be designed to allow multipledifferent users to control and interact with the content, such as mayoccur in a multiplayer video game or other multi-user applications. Inorder to allow such multi-user control and interaction, the disclosedtechniques may employ concepts such as user sessions and content iteminstances. In some examples, one or more instances of a content item maybe configurable to execute with multiple simultaneously assigned userssessions. This may, for example, allow multiple users to play with oragainst one another, or to otherwise collaborate to provide input andreceive output from an executing content item instance. Each contentitem instance may, in some cases, have an associated quantity ofavailable user sessions. In some examples, information associated withcontent item instances may be collected, such as a number of occupieduser sessions, a number of unoccupied user sessions, content iteminstance duration, memory usage, and the like. This information may, insome cases, be used to match and assign authorized users to appropriatecontent item instances. For example, in some cases, when an authorizeduser connects to the system, the user may indicate certain user contentpreferences, such as preferred plot lines, story arcs, virtuallocations, levels, modes, characters, weapons, and the like. Thispreference information may be used to match a user to a particularcontent item instance having at least one unoccupied user session. Insome examples, if no such content item instance is available, then anadditional content item instance may be initiated that may betteraccommodate the user's preferences.

As set forth above, in some examples, information associated withcontent item instances may be collected, such as a number of occupieduser sessions, a number of unoccupied user sessions, content iteminstance duration, memory usage, and the like. In some cases, thisinformation may be provided periodically to a routing function thatroutes the information to one or more available recipients. In someexamples, the available recipients may be associated with a content iteminstance information service, a content item fleet information service,and a historical information service, and others. The content iteminstance information service may, for example, provide information formatching and assignment of user sessions to content item instances,launching of new content item instances, and content item instance-levelfeedback and metrics to content developers and other parties. Thecontent item fleet information service may, for example, provide contentitem fleet-level feedback and metrics to developers and other parties. Acontent item fleet is a grouping of instances of the same or relatedcontent items, such as a grouping of content item instances that are allexecuting the same version of a content item. The historical informationservice may, for example, provide historical feedback and metrics todevelopers and other parties. In some examples, the routing functionand/or processing functions for the content item instance informationservice, the content item fleet information service, and historicalinformation service may be distributed computing-based (e.g.,cloud-based) functions that execute code based, at least in part, onevents, such as the receiving of telemetry information for routingand/or processing. Generally speaking, such cloud-based functions, andservice providing such functions, can run code in response to events andautomatically manage the compute resources. In addition, suchcloud-based functions and services may start running the code or triggercomputing resources in a small amount of time, and those computingresources can be eliminated once the code has been run.

A diagram of an example content deployment, scaling and telemetry system150 that may be used in accordance with the present disclosure is shownin FIG. 1. As shown, content developer compute node 100 may include, forexample, various interfaces, consoles, and/or dashboards operated bycontent developers or other parties. User compute node 110 maycommunicate with identity and entitlement services 105, content iteminstance information service 115, and/or telemetry components 125 using,for example, one or more networks, including one or more wide areanetworks (WANs) such as the Internet and/or one or more local areanetworks (LANs). As should be appreciated, although only a singledeveloper compute node 100 is shown in FIG. 1, system 150 may includeany number of different developers and other parties deploying anynumber of different content items. In some cases, content developercompute nodes 100 may execute one or more integrated developmentenvironment (IDE) applications, or portions thereof, to assist indevelopment of content. Generally, as will be described in greaterdetail below, content developer compute node 100 may allow, for example,developers to design and develop content items, to provide access tocontent items for deployment, to provide user identity and/orentitlement information, to monitor and obtain feedback and metricsassociated with content item instances, content item fleets, andhistorical information, and other operations. As will also be describedin greater detail below, when a developer is ready to deploy a certaincontent item, information for accessing the content may, for example, beprovided to content execution components 120, which may perform variousoperations for executing instances of the content item, which are madeaccessible to various users.

In some examples, in addition to developing and providing of content,developers and other parties may also provide identity and/orentitlement information for various users to access the providedcontent. In particular, developer compute node 100 may sometimesinteract with identity and entitlement services 105 to provide thisidentity and/or entitlement information. In other examples, informationmay be provided to identity and entitlement services 105 by otherparties. In some cases, developers or other parties may configure anidentity pool by providing indications of authorized users that mayaccess one or more content items. In some examples, identity andentitlement services 105 may generate or receive identity authenticationinformation, such as user names, passwords, and the like, forauthenticating the identities of various users. User identities andtheir associated authentication information may be stored, for example,in identity information 107. Also, in some examples, developers or otherparties may provide entitlement information 106, which may indicate thecontent items with which each authorized user is entitled to interact.In some examples, certain users may only be permitted to access testversions, or fully developed versions, certain versions for which theuser has paid or subscribed, or any other types of content.

User compute node 110 may be employed by a user to request access tocontent, such as a user session for interaction with a particularcontent item instance. User compute node 110 may communicate withidentity and entitlement services 105, content item instance informationservice 115, and/or content execution components 120 using, for example,one or more networks, including one or more wide area networks (WANs)such as the Internet and/or one or more local area networks (LANs). Asshould be appreciated, although only a single user compute node 110 isshown in FIG. 1, system 150 may include any number of different usersaccessing the same or different content. In some cases, in order for auser to requests access to content, a determination may be made ofwhether the user is authorized to access content that is deployed bysystem 150. In some examples, system interface 111 may provide identityauthentication information for the user to identity and entitlementservices 105, which may attempt to match the provided user identityauthentication information to identity authentication information forthe user that is stored in identity information 107. If no match isdetermined, then the user may, for example, be denied access to anycontent and/or may be prompted to register, pay, and/or subscribe foraccess to content and/or may be redirected to various services forperforming those operations. If, on the other hand, the user's providedidentity authentication is matched to stored identity authenticationinformation, then the user's identity may be authenticated and the usermay be permitted to further interact with system 150 and request accessto content.

Content client 112 of user compute node 110 may then communicate withcontent item instance information service 115 to provide informationabout the user to content item instance information service 115. Inturn, content item instance information service 115 may communicate withidentity and entitlement services 105 to determine, based at least inpart on entitlement information 106, content that the user is authorizedfor and entitled to access. As will be described in greater detailbelow, the user may then request access to a selected content item thatthe user is entitled access, and content item instance informationservice 115 may match and assign a user session for the user to aparticular instance of the selected content item that executes withincontent execution components 120. This assignment information may beforwarded to content execution components 120, which may establishcommunications between content client 112 and its assigned matchedcontent item instance.

In addition to scaling and executing of content, content executioncomponents 120 may also collect various telemetry information aboutexecuting content item instances, such as a number of occupied usersessions, a number of unoccupied user sessions, content item instanceduration, memory usage, and the like. Content execution components 120may provide this collected telemetry information to telemetry components125, which, as will be described in greater detail below, may route andprocess the telemetry data. For example, telemetry components mayprovide content item instance information to content item instanceinformation service 115. This content item instance information may, forexample, enable matching and assignment of user sessions to content iteminstances, launching of new content item instances, and content iteminstance-level feedback and metrics to content developers and otherparties. In addition to content item instance information service 115,telemetry information may also be provided to other services, such acontent item fleet information service and a historical informationservice. These and other telemetry data services are described ingreater detail below with reference to FIG. 3.

FIG. 2 is a diagram showing an example content scaling and executionsystem that may be used in accordance with the present disclosure. Asshown in FIG. 2, content execution components 120 (also shown in FIG. 1)include scaling components 230, which may perform various operations forscaling deployed content. In particular, when a content item is readyfor deployment using system 150, a message may be sent via developercompute node 100 indicating that the content item is ready fordeployment and providing information for accessing the content, such aslocation and/or address information. In some examples, the developer mayalso provide additional information such as a name for the content itemfleet, a development stage, and a description of the content item. Theaccess information and, in some cases, additional information may beprovided to content scaling component 230, which may issue instructionsto install one or more instances of the content item as an image on avirtual machine instance. As will be described in greater detail below,additional instances of the content item may then be launched on thesame virtual machine instance and/or by copying the image onto anynumber of additional virtual machines instances.

A grouping of content item instances for the deployed content item isreferred to as the content item fleet. In FIG. 2, content executioncomponents 120 execute an example content item fleet 210. As should beappreciated, although only a single content item fleet 210 is shown inFIG. 2, content execution components 120 may execute any number ofdifferent content item fleets at the same or different times. In theparticular example of FIG. 2, content item fleet 210 includes twovirtual machine instances 220A and 220N, each executing three contentitem instances. In particular, virtual machine instance 220A executescontent item instances 201A-N, while virtual machine instance 220Nexecutes content item instances 221A-N. It is noted, however, that acontent item fleet in accordance with the disclosed techniques mayinclude any number of virtual machine instances each executing anynumber of different content item instances. In some examples, one ormore of content item instances 201A-N and 221A-N, and in some cases allof content item instances 201A-N and 221A-N, may be configurable toexecute with multiple simultaneously assigned users sessions. This may,for example, allow multiple users to play with or against one another,or to otherwise collaborate within a single content item instance, suchas may occur in a multiplayer video game or other multi-userapplications.

In some examples, each content item instance 201A-N and 221A-N mayreceive input, such as control input (e.g., character movement, weaponsfiring, menu selections, etc.), from its assigned user sessions. Also,in some examples, each content item instance 201A-N and 221A-N may thentransmit content information, such as state data updates, event dataupdates and other information to user compute nodes for the assigneduser sessions. The user compute nodes may use this data to render andpresent content at their respective content compute nodes. In someexamples, each user node may include one or more graphics processingunits (GPUs) for rendering of graphics data associated with the contentitem.

In some other examples, content may be rendered by content executioncomponents 120 based on content information that is generated and/ormaintained by the content item instances 201A-N and 221A-N. In theseexamples, content item instances 201A-N and 221A-N may, in some cases,each have access to one or more GPUs. The rendered content may then betransmitted by the content item instances 201A-N and 221A-N to usercompute nodes for the assigned user sessions.

As shown in FIG. 2, each content item instance 201A-N and 221A-Nincludes a respective instance interface 202A-N and 222A-N. In someexamples, each instance interface 202A-N and 222A-N may be associatedwith and/or implemented using a software development kit (SDK) and mayassist in enabling configuration of a content item instance, initiationof user sessions in the content item instance, and collection ofinformation from the content item instance, such as telemetryinformation. For example, in some cases, various instructions associatedwith instance interfaces 202A-N and 222A-N, such as one or more SDKs,may be exposed and/or provided to developers. These instructions mayassist in enabling the content item instances 201A-N and 221A-N toperform the tasks described above and possibly other tasks. Thedevelopers may, in turn, include, embed or otherwise associate theseinstructions with the content item that is made accessible fordeployment. Telemetry information provided by instance interfaces 202A-Nand 222A-N may include, for example, information about executing contentitem instances, such as a number of occupied user sessions, a number ofunoccupied user sessions, content item instance duration, memory usage,and the like.

As also shown in FIG. 2, instance interfaces 202A-N may communicate withproxy component 203 for virtual machine instance 220A, while instanceinterfaces 222A-N may communicate with a proxy component 223 for virtualmachine instance 220N. Proxy components 203 and 223 may generally allowexchange of information and commands between content items 202A-N and222A-N and components external to virtual machine instances 220A-N, suchas scaling components 230 and telemetry landing 301. In particular, insome examples, proxy components 203 and 223 may receive commands fromscaling components 230, such as commands to launch content iteminstances and commands to add a user sessions to a particular contentitem instance. In some examples, proxy components 203 and 223 may alsoprovide information to scaling components 230 and/or telemetry landing301 about executing content item instances. The information provided byproxy components 203 and 223 may include, for example, any of theinformation collected by instance interfaces 202A-N and 222A-N, such asany of the telemetry information described above or other relevantinformation. Proxy components 203 and 223 may provide content iteminstance information at any desired interval, such as at regularrepeating intervals (e.g., every minute or every five minutes), inresponse to particular events or conditions, in continuous orintermittent streams, or using any combination of these or othertechniques.

In some examples, scaling components 230 may monitor content item fleet210 based on, for example, information provided by proxy components 203and 223 such as described above. In some cases, scaling components 230may use this information to automatically scale content item fleet 210by allocating additional virtual machine instances and/or content iteminstances to the content item fleet 210 and/or by de-allocating existingvirtual machine instances and/or content item instances from the contentitem fleet 210. In some examples, certain configurable conditions maycause scaling components 230 to allocate additional virtual machineinstances and/or content item instances to a content item fleet. Theseconditions may include for example, determining that the total and/oraverage number of unoccupied user sessions for all content iteminstances in the fleet have met or dropped below a particular quantity,determining that the total number of unoccupied user sessions for one ormore individual content item instances in the fleet have met or droppedbelow a particular quantity, and/or other conditions. Also, in someexamples, scaling components 230 may allocate additional virtual machineinstances and/or content item instances to a content item fleet based ona determination that a particular sub-set of a content item fleet, suchas a sub-set of content item instances having particular contentattributes (e.g., modes, virtual locations, characters, weapons, plotlines, story arcs, etc.) meets any of the example allocation conditionsdescribed above or other conditions.

Also, in some examples, certain configurable conditions may causescaling components 230 to de-allocate virtual machine instances and/orcontent item instances from a content item fleet. These conditions mayinclude for example, determining that the total and/or average number ofunoccupied user sessions for all content item instances in the fleethave met or exceeded a particular quantity, determining that the totalnumber of unoccupied user sessions for one or more individual contentitem instances in the fleet have met or exceeded a particular quantity,and/or other conditions. Also, in some examples, scaling components 230may de-allocate virtual machine instances and/or content item instancesfrom a content item fleet based on a determination that a particularsub-set of a content item fleet, such as a sub-set of content iteminstances having particular content attributes (e.g., modes, virtuallocations, characters, weapons, plot lines, story arcs, etc.) satisfiesany of the example de-allocation conditions described above or otherconditions. The de-allocated virtual machine may then eventually beterminated and/or re-purposed. It is noted that, in some cases, it maynot be advantageous to terminate and/or re-purpose a particular virtualmachine instance immediately upon determining that a de-allocationcondition has occurred. This is because the virtual machine instanceselected for de-allocation may still be executing content item instanceswith assigned user sessions. In some examples, a determination may bemade to stop assigning additional user sessions to content iteminstances on the virtual machine instance that is selected forde-allocation. The de-allocated virtual machine instance may then beterminated and/or re-purposed once the currently existing user sessionshave expired.

As set forth above, in addition to providing information to scalingcomponents 230, proxy components 203 and 223 may provide information totelemetry landing 301. This information may be routed and processed byvarious telemetry components, which are now described in detail. Inparticular, FIG. 3 is a diagram illustrating an example telemetryinformation routing and processing system that may be used in accordancewith the present disclosure. As shown in FIG. 3, information provided bycontent execution components 120 (including, for example, proxycomponents 203 and 223, as shown in FIG. 2) may be delivered totelemetry landing 301 of telemetry components 125 (also shown in FIG.1). Upon being delivered to telemetry landing 301, telemetry informationmay be accessed by telemetry routing function 302, which may generallyexamine the provided information and, based on various factors, routethe provided information to one or more recipients, such as processingfunctions 303A-D. In particular, instance-level processing function 303Areceives and processes information for content item instance informationservice 115 (also shown in FIGS. 1 and 2). Fleet-level informationprocessing function 303B receives and processes information for contentitem fleet information service 304. Historical information processingfunction 303C receives and processes information for historicalinformation service 305. Additionally, telemetry routing function 302may route information to any number of additional processing functions303D that may receive and process information for any number ofadditional services 306.

In some examples, when writing telemetry information to telemetrylanding 301, proxy components 203 and 223 may tag or otherwise identifythe information with certain keys or other identification informationaccording to a set of conventions. These conventions may assist thetelemetry routing function 302 to quickly and efficiently route thetelemetry information to appropriate recipients. For example, in somecases, the telemetry information may be identified using the followingformat: fleet identifier/instance identifier/routeidentifier/timestamp/globally unique identifier (GUID). The fleetidentifier may be an identifier for the particular content item fleetwith which the information is associated. The instance identifier may bean identifier for the particular content item instance with which theinformation is associated. The route identifier may be an identifierthat indicates one or more recipients (e.g., any or all of processingfunctions 303A-D) to which the information should be sent. The timestampmay be a timestamp associated with the information, such as a time atwhich the information is collected. In some cases, this identificationinformation may be all that is required for the telemetry routingfunction 302 to route respective telemetry information to theappropriate recipients.

In some examples, any of telemetry routing function 302 and/orprocessing functions 303A-D may be distributed computing-based (e.g.,cloud-based) functions that execute code based, at least in part, onevents, such as the receiving of telemetry information for routingand/or processing. For example, in some cases, telemetry routingfunction 302 may detect and/or may be informed of the receiving oftelemetry information at telemetry landing 301. In response to this,telemetry routing function 302 may automatically initiate execution ofcode for routing the telemetry information, based on, for example, theidentification information such as described above. Likewise, processingfunctions 303A-D may then detect and/or may be informed of telemetryinformation that has been routed thereto, and may then automaticallyinitiate execution of code for processing the received information, suchas by organizing and storing the received information and generating anyappropriate alarms or notifications. In some examples, implementation oftelemetry routing function 302 and/or processing functions 303A-D usingdistributed computing-based (e.g., cloud-based) functions that executecode based, at least in part, on events may be advantageous by, forexample, reducing the amount of computing resources and cost that may berequired for routing and/or processing services that maintained aconstant execution even during times when no new telemetry informationwas available for routing and/or processing.

Content item instance information service 115 may generally receive andprovide information regarding individual content item instances executedby content execution components 120, including, for example, contentitem instances 201A-N and 221A-N of FIG. 2. This information mayinclude, for example, a number of occupied user sessions for eachexecuting content item instance, a number of unoccupied user sessionsfor each executing content item instance, content item instance durationinformation, memory usage by in each executing content item instance,and the like. Content item instance information service 115 may use thisinformation, for example, to assist in matching and assigning of usersessions to particular content item instances. In particular, referringback to FIG. 1, it is seen that content client 112 of user compute node110 may communicate with content item instance information service 115to request information about available content and to request access toavailable content. As also shown in FIG. 1, content item instanceinformation service 115 may communicate with identity and entitlementservices 105 to determine, based at least in part on entitlementinformation 106, which content items the user is entitled to access. Itis noted that entitlement information 106 may indicate user entitlementsat various different levels of granularity. For example, in some cases,entitlement information 106 may indicate whether the user is generallyallowed access to the content executed by system 150. In other cases,entitlement information 106 may be provided at finer granularity levelsand may indicate particular content to which the user is entitled toaccess, such as particular titles, particular versions, particular storyarcs or plotlines, particular virtual locations, particular modes,particular characters, particular weapons, and the like.

In some examples, content client 112 may request that content iteminstance information service 115 provide information about availablecontent items that the user is entitled to access, such as a listing ofall available content items or content items having certain contentattributes, such as certain plot lines, story arcs, virtual locations,levels, modes, characters, weapons, and the like. Upon receiving thisinformation, in some examples, the user may select a particular contentitem and submit a request to access to selected content item via contentclient 112. Additionally, content client 112 may also provide to contentitem instance information service 115 information about certain contentpreferences desired by the user, such as certain plot lines, story arcs,virtual locations, levels, modes, characters, weapons, and the like.Content item instance information service 115 may then, based at leastin part on the user's request, the user's preferences, and the telemetryinformation received from telemetry components 125, match the user'srequest to a particular instance of the user's selected content item.

In some examples, content item instance information service 115 mayattempt to identify one or more instances of the selected content itemhaving content attributes that match, or at least partially match,content attributes of the user's requested preferences. Content iteminstance information service 115 may obtain content attributeinformation for executing content item instances through a variety ofdifferent techniques. In some examples, content attribute informationmay be collected and provided as part of telemetry information madeavailable from telemetry components 125, may be retrieved from scalingcomponent 230 of FIG. 2, or may be otherwise made available to contentitem instance information service 115. Upon identifying one or morecontent item instances with content attributes that at least partiallymatch the user's preferences, content item information service may thendetermine, based at least in part on telemetry information fromtelemetry components 125, whether there are any unoccupied user sessionsfor any of the identified content item instances. In some examples,content item instance information service 115 may then assign the userto one of the identified content item instances with at least oneunoccupied user session. In some examples, the user may be assigned tothe identified content item instance with at least one unoccupied usersession that has content attributes that most closely matches the user'spreferences. In other examples, the user may be assigned to a contentitem instance based on a combination of factors including, for example,the user's preferences, a number of unoccupied user sessions, and thelike. For example, consider the scenario in which a user specifies fivedifferent content attribute preferences for a content item instance tojoin. Now suppose that a first content item instance matches all five ofthe user's preferences but only has one unoccupied user session, while asecond content item instance matches four out of five of the user'spreferences but has ten unoccupied user sessions. In this scenario, itmay be advantageous to assign the user to the second content iteminstance, in order to keep the single remaining unoccupied user sessionof the first content item instance available for other users whosepreferences may be even more strongly correlated to the first contentitem instance. Also, in some examples, content item instance informationservice 115 may provide information about identified content iteminstances with at least one unoccupied user session that at leastpartially match a user's preferences to content client 112 in order toallow the user to select one of the identified content item instancesfor assignment or to otherwise provide input for making such aselection.

In some examples, content item instance information service 115 may,instead of matching and assigning the user to an existing alreadylaunched and executing content item instance, request that scalingcomponents 230 launch an additional content item instance to which toassign the user. This may occur, for example, when none of the existingcontent item instances within the fleet have any remaining unoccupieduser sessions and/or when none of the existing content item instanceswithin the fleet have content attributes that are determined tosufficiently match the user's requested content attribute preferences.

Once the user has been matched and assigned to a particular content iteminstance, content item instance information service 115 may provide anindication of the assigned content item instance (or instructions tolaunch a new content item instance) to scaling components 230. Scalingcomponents 230 may, in turn, establish communications between a usersession for the user and the assigned content item instance by, forexample, instructing the assigned content item instance to communicatewith content client 112 at user compute node 110. As set forth above, insome examples, these communications may include transmitting, by theassigned content item instance, state information, event information,rendered graphics and audio, and/or other information associated withthe content item instance to the content client 112 corresponding to theuser session. Also, in some examples, these communications may includetransmitting, by the content client 112, input, such as control input(e.g., character movement, weapons firing, menu selections, etc.) to theassigned content item instance.

Thus, as described above, content item instance information service 115may use content item instance-level telemetry information provided bytelemetry components 125 to assist in the process of matching andassigning users sessions to content item instances. In addition to thesematching techniques, content item instance-level telemetry informationprovided to content item instance information service 115 may also beused, for example, to provide content item instance-level feedback andmetrics to developers and possibly other parties. In particular, asshown in both FIGS. 1 and 3, developer compute node 100 may accesscontent item instance information service 115 to request content iteminstance-level information, such as a number of occupied user sessionsfor each executing content item instance, a number of unoccupied usersessions for each executing content item instance, content item instanceduration information, memory usage by in each executing content iteminstance, and the like.

Referring back to FIG. 3, in addition to content item instanceinformation service 115, telemetry routing function 302 may routetelemetry information, though respective processing functions 303B-D, tocontent item fleet information service 304, historical informationservice 305, and other additional services 306. Content item fleetinformation service 304 may generally receive and provide content itemfleet-level telemetry information to developers and/or other parties.Content item fleet-level information may include information regardingoccupied user sessions within the fleet, unoccupied user sessions withinthe fleet, instance duration information for the fleet, memory usage bythe fleet, a number of executing instances within the fleet, instancetermination information, and the like. For occupied user sessions, thefleet-level information may include, for example, the total number ofoccupied user sessions for all fleet instances, an average number ofoccupied user sessions for all fleet instances, a number of occupiedsessions in the fleet instance with the least occupied sessions, anumber of occupied sessions in the fleet instance with the most occupiedsessions and the like. For unoccupied user sessions, the fleet-levelinformation may include, for example, the total number of unoccupieduser sessions for all fleet instances, an average number of unoccupieduser sessions for all fleet instances, a number of unoccupied sessionsin the fleet instance with the least unoccupied sessions, a number ofunoccupied sessions in the fleet instance with the most unoccupiedsessions and the like. For instance duration information, thefleet-level information may include, for example, total, average,maximum, and minimum duration for fleet instances that terminated withina particular period as well as a number of instances that terminatedwithin a particular period. For memory usage information, thefleet-level information may include, for example, total, average,maximum, and minimum memory usage for fleet instances.

In some examples, content item fleet information service 304 and/orcontent item instance information service 115 may allow developers orother parties to set alarms and/or other notifications such that theymay be notified of certain events or conditions associated with contentitem fleets and/or instances. Some example conditions that may triggeralarms are a total number of occupied fleet sessions meeting, exceedingor falling below specified levels, one or more fleet instances havingless than a specified number of occupied sessions, a total number ofunoccupied fleet sessions meeting, exceeding or falling below specifiedlevels, fleet instances having less than a specified average timeduration, fleet instances having more than a specified average ormaximum memory usage, and other conditions.

Historical information service 305 may generally receive, maintain, andprovide historical information regarding content item fleets and/orcontent item instances. In some examples, historical information servicemay include historical information about content item fleets and/orcontent item instances that have been previously terminated and/orinformation about content item fleets and/or content item instances thatmay wholly are partially continue to be executed. Historical informationservice 305 may, for example, provide any, or all, of the instance-levelinformation and or fleet-level information set forth in detail aboveand/or any other relevant historical information. In some examples,historical information may allow developers and/or other parties torequest information for certain specifiable historical periods, such asfor the past sixty or ninety days, or any other relevant period.

Some example processes for performing various aspects of the disclosedtechniques will now be described in detail. In particular, FIG. 4 is adiagram illustrating an example content deployment and scaling processthat may be used in accordance with the present disclosure. As set forthabove, content may be deployed using a plurality of instances of thecontent item, referred to herein as a content item fleet. In someexamples, one or more of the content item instances in the fleet may beconfigurable to have multiple simultaneously assigned user sessions. Insome examples, all of the content item instances in the fleet may beconfigurable to have multiple simultaneously assigned user sessions.Also, in some examples, at least two content item instances in the fleetmay execute on a single virtual machine instance. As shown in FIG. 4, atoperation 410, an indication may be received that a content item isready for deployment. As set forth above, the content item may includecontent, such as a video game, that is being developed and/or tested orcontent that is fully developed and tested and being sold or otherwisedeployed to customers or other users. As also set forth above, in someexamples, the content may be created using an SDK or other elements thatare associated and/or integrated with various backend or other servicesor components that may host or otherwise interact with deployedinstances of the content item, such as content item instance informationservice 115, instance interfaces 220A-N and 222A-N, and/or contentexecution components 120 of FIG. 2. In these examples, the SDK or otherelements may provide code and other functionality built-in to thecontent created by the developer that may allow, for example, ingestion,configuration, provisioning and deployment of the content to be moreeasily and rapidly accomplished, such as by allowing the content tointeract more efficiently with a multi-player video gaming or othermulti-user environment. For example, an SDK used to create the contentmay assist in configuration of new user sessions for one or more usersand collection of information about executing content item instances,such as a number of occupied user sessions, a number of unoccupied usersessions, content item instance duration, memory usage, and the like.The indication may, for example, be received by content executioncomponents, such as content execution components 120 of FIG. 1 from adeveloper compute node, such as developer compute node 100 of FIG. 1. Atoperation 412, content item information is received. Such content itemsmay include files, binaries, or code, such as binary files associatedwith a video game that has been created with the SDK associated with thecontent item instance information service 115 and/or content executioncomponents 120. The information received at operation 412 may include,for example, information for accessing the content, such as a locationat which the code of other data associated with the content item isstored or other information for accessing the content item. Theinformation received at operation 412 may also include, for example, aname for a fleet of instances of the content item, a stage ofdevelopment for the content item, a description of the content item, andother information. At operation 414, at least one instance of thecontent item is installed as an image on a virtual machine instance.Operation 414 may be performed based on, for example, the indicationthat the content item is ready for deployment and any associated contentitem information. In some examples, scaling component 230 of FIG. 2 mayreceive location information for the content item code and issueinstructions for the content item code to be installed from the locationidentified in the received location information as an image on aparticular virtual machine.

At operation 416, identity information for users is received. Useridentity information, such as identity information 107 of FIG. 1, may bereceived from developers or from other parties. As set forth above,identity information for users may include, for example, identityauthentication information for authenticating the identity of theauthorized users, such as a user name and password. As should beappreciated, user identity information may be received at any time andneed not necessarily be received either before or after a particularcontent item is actually deployed. At operation 418, entitlementinformation is received. Entitlement information, such as entitlementinformation 106 of FIG. 1, may be received from developers or from otherparties. As set forth above, entitlement information may include, forexample, for various authorized users and indications of which contentitems are entitled to be access by the authorized users. As also setforth above, entitlement information may indicate entitlements atvarious levels of granularity, such as particular titles, particularversions, particular story arcs or plotlines, particular virtuallocations, particular modes, particular characters, particular weapons,and the like. As should be appreciated, entitlement information may bereceived at any time and need not necessarily be received either beforeor after a particular content item is actually deployed.

At operation 420, requests are received from authorized and entitledusers to access the content item. Some example techniques forauthenticating users and determining and enforcing their respectiveentitlements are described in detail above and are not repeated here. Atoperation 422, the content item fleet for the content item is scaledbased on, for example, the user requests received at operation 420.Scaling of the content item fleet may be performed by, for example,scaling component 230 of FIG. 2. In some examples, the scaling performedat operation 422 may include copying the image installed at operation414 onto additional virtual machine instances based, at least in part,on the user requests received at operation 420. Also, in some examples,scaling of the content item fleet may include detecting of allocationand/or de-allocation conditions and performing various operations inresponse thereto.

In particular, at sub-operation 424, it is determined whether anallocation condition is detected. As set forth above, an allocationcondition may include, for example, determining that the total and/oraverage number of unoccupied user sessions for all content iteminstances in the fleet have met or dropped below a particular quantity,determining that the total number of unoccupied user sessions for one ormore individual content item instances in the fleet have met or droppedbelow a particular quantity, and/or other conditions. If, atsub-operation 424, an allocation condition is detected, then atsub-operation 426, an additional virtual machine instance may beallocated to the content item fleet. This allocation may occur based on,for example, the detection of the allocation condition. At operation428, the image installed at operation 414 is copied onto the additionalvirtual machine instance, thereby enabling the launching of additionalcontent item instances. The additional virtual machine may handle one ormany additional users or sessions.

If no allocation condition is detected at sub-operation 424, then, atsub-operation 430, it is determined whether a de-allocation condition isdetected. As set forth above, a de-allocation condition may include, forexample, determining that the total and/or average number of unoccupieduser sessions for all content item instances in the fleet have met orexceeded a particular quantity, determining that the total number ofunoccupied user sessions for one or more individual content iteminstances in the fleet have met or exceeded a particular quantity,and/or other conditions. If no de-allocation condition is detected atsub-operation 430, then the process may return to sub-operation 424. If,at sub-operation 430, a de-allocation condition is detected, then atsub-operation 432, a virtual machine instance may be de-allocated fromthe content item fleet. This de-allocation may occur based on, forexample, the detection of the de-allocation condition. At sub-operation434, the de-allocated virtual machine instance may be terminated and/orrepurposed. As set forth above, in some cases, it may not beadvantageous to terminate and/or repurpose a de-allocated virtualmachine instance immediately upon determining that a de-allocationcondition has occurred. Rather, a determination may be made to stopassigning additional user sessions to content item instances on thede-allocated virtual machine instance and to terminate and/or repurposethe de-allocated virtual machine instance after its existing usersessions have expired.

It is noted that the detection of allocation and de-allocationconditions at sub-operations 424 and 430 are merely an example of how acontent item fleet may be scaled. In particular, there is no requirementthat sub-operations 424 and 430 must be performed in the order shown inFIG. 4 and may be performed in different orders and/or may be performedwholly or partially dependently or independently relative to one other.For example, in some cases, the determination of whether a de-allocationcondition exists may be performed based, at least in part, on a clean-upprocess that may run at particular intervals and/or in response tocertain configurable events, such as termination of user sessions.Additionally, in some examples, the determination of whether anallocation condition exists may be performed at particular intervalsand/or in response to certain configurable events, such as generation ofuser sessions. Furthermore, it is noted that the allocation and/orde-allocation determination may also be performed based on historicaldata, such as a number of user sessions that have been generated orterminated over a particular time period.

FIG. 5 is a diagram illustrating an example process for contentexecution in accordance with the present disclosure. At operation 510,identity information may be received from a user that is attempting togain access to content. For example, at operation 510, identity andentitlement services 105 of FIG. 1 may receive identity information fromsystem interface 111 of user compute node 110 of FIG. 1. As set forthabove, the identity information received at operation 510 may include,for example, a username and password for the user. At operation 511, itis determined whether the received identity information matches storedidentity information. For example, identity and entitlement services 105of FIG. 1 may attempt to match the identity information received atoperation 510 to stored identity information, such as identityinformation 107 of FIG. 1. In some examples, a username and passwordreceived at operation 510 may be matched to a username and passwordwithin stored identity information. If a match is detected at operation511, then, at operation 512, the user may be authenticated. If no matchis detected at operation 511, then at operation 513, the user is notauthenticated. As set forth above, if the user cannot be authenticated(e.g., if no match is determined), then the user may, for example, bedenied access to any content and/or may be prompted to register, pay,and/or subscribe for access to content and/or may be redirected tovarious services for performing those operations.

At operation 514, content entitlements may be determined for the user.For example, as shown in FIG. 1, content item instance informationservice 115 may request content entitlement information for the userfrom identity and entitlement services 105. In some examples, storedentitlement information, such as entitlement information 106 of FIG. 1,may indicate content entitlement information for authenticated users,such as various content items that the user is entitled to access. Atoperation 516, information is provided to the user regarding contentitems to which the user is entitled. For example, content item instanceinformation service 115 may provide, to content client 112, informationabout available content items that the user is entitled to access, suchas a listing of all available content items or content items havingcertain content attributes, such as certain plot lines, story arcs,virtual locations, levels, modes, characters, weapons, and the like.

At operation 518, a request is received for the user to access a contentitem. For example, the user may employ the information provided atoperation 516 to select a particular content item that the user wishesto access. Content client 112 may then submit a request to access aselected content item, which may be received, at operation 518, bycontent item instance information service 115. Additionally, atoperation 520, user preferences for the selected content item arereceived. The user preferences may include, for example, certain plotlines, story arcs, virtual locations, levels, modes, characters,weapons, and the like desired by the user. At operation 522, telemetryinformation is received. For example, telemetry information regardingcontent item instances in a content item fleet may be received bycontent item instance information service 115 via telemetry components125. In some examples, the received telemetry information may include anindication of user session availability on the content item fleet, suchas an indication of whether there are any unoccupied user sessions forone or more content item instances in the fleet, a number of unoccupieduser sessions for one or more content item instances in the fleet, orother availability information. Examples of some other telemetryinformation that may be received by content item instance informationservice 115 are described in detail above and are not repeated here. Itis noted, that telemetry information may be received and updatedrepeatedly by content item instance information service 115, such as atone minute or five minute intervals or at any other desired times orintervals.

At operation 524, a user session associated with the user is assigned toa content item instance based on, for example, the telemetry informationand/or the user preferences. For example, in some cases, content iteminstance information service 115 may, based on telemetry information,identify one or more executing content item instances with at least oneunoccupied user session that have content attributes that match orpartially match the user's preferences. In some examples, content iteminstance information service 115 may then assign the user to one of theidentified content item instances. Also, in some examples, content iteminstance information service 115 may assign the user to a content iteminstance that at least partially matches one or more of the userpreferences. Some other example techniques for user assignment are setforth in detail above and are not repeated here. As also set forthabove, in some examples, content item instance information service 115may, instead of matching and assigning the user to an existing alreadylaunched and executing content item instance, request that scalingcomponents 230 launch an additional content item instance to which toassign the user. This may occur, for example, when none of the existingcontent item instances within the fleet have any remaining unoccupieduser sessions and/or when none of the existing content item instanceswithin the fleet have content attributes that are determined tosufficiently match the user's requested content attribute preferences.

At operation 526, an indication of the assigned content item instancemay be provided to scaling components, such as scaling components 230 ofFIG. 2. If the user is being assigned to a content item instance thathas not yet been launched, then this may also be indicated as part ofthe indication provided at operation 526. At operation 528, instructionsare provided to establish communications between the user session andthe assigned content item. For example, scaling components 230 mayinstruct the assigned content item instance to communicate with the usersession associated with content client 112 at the user compute node 110operated by the user.

FIG. 6 is a diagram illustrating an example telemetry informationrouting process that may be used in accordance with the presentdisclosure. At operation 610, telemetry information is collected from acontent item instance. In some examples, telemetry information may becollected at operation 610 by proxy components 203 and 223 of FIG. 2,which may receive the information from content item instances 201A-N and221A-N through instance interfaces 202A-N and 222A-N, respectively. Asset forth above, in some examples, various instructions associated withinstance interfaces 202A-N and 222A-N, such as one or more softwaredevelopment kits (SDKs) may be exposed and/or provided to developers.These instructions may assist in enabling the content item instances201A-N and 221A-N to report the telemetry information to the proxycomponents 203 and 223 through instance interfaces 202A-N and 222A-N.The developers may, in turn, include, embed or otherwise associate theseinstructions within the content item that is made accessible fordeployment. As described in detail above, telemetry informationcollected from each content item instance may include, for example,information regarding a number of occupied user sessions, a number ofunoccupied user sessions, content item instance duration, memory usage,and the like.

At operation 612, identification information may be assigned to thetelemetry information received at operation 610. For example, as setforth above, proxy components 203 and 223 may tag telemetry informationwith certain keys or other identification information according to a setof conventions. In one specific example, the telemetry information maybe identified using the following format: fleet identifier/instanceidentifier/route identifier/timestamp/globally unique identifier (GUID).The fleet identifier may be an identifier for the particular contentitem fleet with which the telemetry information is associated. Theinstance identifier may be an identifier for the particular content iteminstance with which the telemetry information is associated. The routeidentifier may be an identifier that indicates one or more recipients(e.g., any or all of processing functions 303A-D of FIG. 3) to which theinformation should be sent.

At operation 614, the telemetry information and the identificationinformation are provided to a location accessible to a routing function,such as telemetry landing 301 of FIG. 3 (which is accessible totelemetry routing function 302). As set forth above, in some examples,the telemetry information may be provided to telemetry landing 301 atregular repeating intervals, such as every minute or every five minutes.In some other examples, telemetry information may be provided as acontinuous stream of information or at any other time or interval.

At operation 616, the telemetry information and the identificationinformation are routed to one or more recipients based on, for example,the identification information and/or the telemetry information itself.For example, as set forth above, telemetry information may be routed torecipients such as any one or more of processing functions 303A-D ofFIG. 3, which may be associated with and may process information forcontent item instance information service 115, content item fleetinformation service 304, historical information service 305, andadditional services 306. Processing functions 303A-D may be associatedwith various services for content item instance information analysis,such as services 115 and 304-306. As set forth above, in some examples,instance-level information processing function 303A may be forinformation associated with each instance in a fleet of content iteminstances, fleet-level information processing function 303B may be forinformation associated with the fleet of content item instances, andhistorical information processing function 303C may be for historicalinformation. In some cases, the telemetry information may be routed toone or more of processing functions 303A-D or other recipients based on,for example, the route identifier within the identification informationassigned at operation 612. At operation 618, the telemetry informationand the identification information are sent to the one or morerecipients determined at operation 616. As set forth above, in someexamples, any of telemetry routing function 302 and/or processingfunctions 303A-D may include compute services that execute based, atleast in part, on events, such as the receiving of telemetry informationfor routing and/or processing. In some examples, implementation oftelemetry routing function 302 and/or processing functions 303A-D usingdistributed computing-based (e.g., cloud-based) functions that executecode based, at least in part, on events may be advantageous by, forexample, reducing the amount of computing resources and cost that may berequired for routing and/or processing of telemetry information.

At operation 620, the telemetry information and the identificationinformation are received by the one or more recipients, such as one ormore of processing functions 303A-D. At operation 622, the telemetryinformation may be processed, which may include updating previouslyreceived telemetry information, organizing the telemetry informationsuch that it may be efficiently accessed by developers, users or otherparties, and generating any alarms or other notification based on thetelemetry information, such as those described above. In addition, atoperation 622, one or more of processing functions 303A-D may providethe telemetry information to the appropriate services (e.g., one or moreof services 115 and/or 304-306). As set forth above, in some examples,the route identifier within the identification information assigned atoperation 612 may be accessed by telemetry routing function 302 and anyof processing functions 303A-D to indicate one or more recipients towhich to route the telemetry information. As also set forth above, insome examples, instance-level processing function 303A may provideinformation to content item instance information service 115,fleet-level information processing function 303B may provide informationto content item fleet information service 304, historical informationprocessing function 303C may provide information to historicalinformation service 305, and any number of additional processingfunctions 303D may provide information to any number of additionalservices 306. In some examples, any or all of services 115 and 304-306may be at least partially accessible to a content item developer itemfor providing information to the content item developer.

In at least some embodiments, one or more compute nodes that implement aportion or all of one or more of the technologies described herein mayinclude or may be associated with a computer system that includes or isconfigured to access one or more computer-accessible media. A computenode, which may be referred to also as a computing node, may beimplemented on a wide variety of computing environments, such ascommodity-hardware computers, virtual machines, web services, computingclusters and computing appliances. Any of these computing devices orenvironments may, for convenience, be described as compute nodes. FIG. 7depicts a computer system that includes or is configured to access oneor more computer-accessible media. In the illustrated embodiment,computing device 15 includes one or more processors 10 a, 10 b and/or 10n (which may be referred herein singularly as “a processor 10” or in theplural as “the processors 10”) coupled to a system memory 20 via aninput/output (I/O) interface 30. Computing device 15 further includes anetwork interface 40 coupled to I/O interface 30.

In various embodiments, computing device 15 may be a uniprocessor systemincluding one processor 10 or a multiprocessor system including severalprocessors 10 (e.g., two, four, eight or another suitable number).Processors 10 may be any suitable processors capable of executinginstructions. For example, in various embodiments, processors 10 may beembedded processors implementing any of a variety of instruction setarchitectures (ISAs), such as the x86, PowerPC, SPARC or MIPS ISAs orany other suitable ISA. In multiprocessor systems, each of processors 10may commonly, but not necessarily, implement the same ISA.

System memory 20 may be configured to store instructions and dataaccessible by processor(s) 10. In various embodiments, system memory 20may be implemented using any suitable memory technology, such as staticrandom access memory (SRAM), synchronous dynamic RAM (SDRAM),nonvolatile/Flash®-type memory or any other type of memory. In theillustrated embodiment, program instructions and data implementing oneor more desired functions, such as those methods, techniques and datadescribed above, are shown stored within system memory 20 as code 25 anddata 26.

In one embodiment, I/O interface 30 may be configured to coordinate I/Otraffic between processor 10, system memory 20 and any peripherals inthe device, including network interface 40 or other peripheralinterfaces. In some embodiments, I/O interface 30 may perform anynecessary protocol, timing or other data transformations to convert datasignals from one component (e.g., system memory 20) into a formatsuitable for use by another component (e.g., processor 10). In someembodiments, I/O interface 30 may include support for devices attachedthrough various types of peripheral buses, such as a variant of thePeripheral Component Interconnect (PCI) bus standard or the UniversalSerial Bus (USB) standard, for example. In some embodiments, thefunction of I/O interface 30 may be split into two or more separatecomponents, such as a north bridge and a south bridge, for example.Also, in some embodiments some or all of the functionality of I/Ointerface 30, such as an interface to system memory 20, may beincorporated directly into processor 10.

Network interface 40 may be configured to allow data to be exchangedbetween computing device 15 and other device or devices 60 attached to anetwork or networks 50, such as other computer systems or devices, forexample. In various embodiments, network interface 40 may supportcommunication via any suitable wired or wireless general data networks,such as types of Ethernet networks, for example. Additionally, networkinterface 40 may support communication via telecommunications/telephonynetworks, such as analog voice networks or digital fiber communicationsnetworks, via storage area networks such as Fibre Channel SANs (storagearea networks) or via any other suitable type of network and/orprotocol.

In some embodiments, system memory 20 may be one embodiment of acomputer-accessible medium configured to store program instructions anddata as described above for implementing embodiments of thecorresponding methods and apparatus. However, in other embodiments,program instructions and/or data may be received, sent or stored upondifferent types of computer-accessible media. Generally speaking, acomputer-accessible medium may include non-transitory storage media ormemory media, such as magnetic or optical media—e.g., disk or DVD/CDcoupled to computing device 15 via I/O interface 30. A non-transitorycomputer-accessible storage medium may also include any volatile ornon-volatile media, such as RAM (e.g., SDRAM, DDR SDRAM, RDRAM, SRAM,etc.), ROM (read only memory) etc., that may be included in someembodiments of computing device 15 as system memory 20 or another typeof memory. Further, a computer-accessible medium may includetransmission media or signals such as electrical, electromagnetic ordigital signals conveyed via a communication medium, such as a networkand/or a wireless link, such as those that may be implemented vianetwork interface 40. Portions or all of multiple computing devices,such as those illustrated in FIG. 7, may be used to implement thedescribed functionality in various embodiments; for example, softwarecomponents running on a variety of different devices and servers maycollaborate to provide the functionality. In some embodiments, portionsof the described functionality may be implemented using storage devices,network devices or special-purpose computer systems. The term “computingdevice,” as used herein, refers to at least all these types of devicesand is not limited to these types of devices.

Each of the processes, methods and algorithms described in the precedingsections may be embodied in, and fully or partially automated by, codemodules executed by one or more computers or computer processors. Thecode modules may be stored on any type of non-transitorycomputer-readable medium or computer storage device, such as harddrives, solid state memory, optical disc and/or the like. The processesand algorithms may be implemented partially or wholly inapplication-specific circuitry. The results of the disclosed processesand process steps may be stored, persistently or otherwise, in any typeof non-transitory computer storage such as, e.g., volatile ornon-volatile storage.

The various features and processes described above may be usedindependently of one another, or may be combined in various ways. Allpossible combinations and subcombinations are intended to fall withinthe scope of this disclosure. In addition, certain methods or processblocks may be omitted in some implementations. The methods and processesdescribed herein are also not limited to any particular sequence, andthe blocks or states relating thereto can be performed in othersequences that are appropriate. For example, described blocks or statesmay be performed in an order other than that specifically disclosed, ormultiple blocks or states may be combined in a single block or state.The example blocks or states may be performed in serial, in parallel orin some other manner. Blocks or states may be added to or removed fromthe disclosed example embodiments. The example systems and componentsdescribed herein may be configured differently than described. Forexample, elements may be added to, removed from or rearranged comparedto the disclosed example embodiments.

It will also be appreciated that various items are illustrated as beingstored in memory or on storage while being used, and that these items orportions thereof may be transferred between memory and other storagedevices for purposes of memory management and data integrity.Alternatively, in other embodiments some or all of the software modulesand/or systems may execute in memory on another device and communicatewith the illustrated computing systems via inter-computer communication.Furthermore, in some embodiments, some or all of the systems and/ormodules may be implemented or provided in other ways, such as at leastpartially in firmware and/or hardware, including, but not limited to,one or more application-specific integrated circuits (ASICs), standardintegrated circuits, controllers (e.g., by executing appropriateinstructions, and including microcontrollers and/or embeddedcontrollers), field-programmable gate arrays (FPGAs), complexprogrammable logic devices (CPLDs), etc. Some or all of the modules,systems and data structures may also be stored (e.g., as softwareinstructions or structured data) on a computer-readable medium, such asa hard disk, a memory, a network or a portable media article to be readby an appropriate drive or via an appropriate connection. The systems,modules and data structures may also be transmitted as generated datasignals (e.g., as part of a carrier wave or other analog or digitalpropagated signal) on a variety of computer-readable transmission media,including wireless-based and wired/cable-based media, and may take avariety of forms (e.g., as part of a single or multiplexed analogsignal, or as multiple discrete digital packets or frames). Suchcomputer program products may also take other forms in otherembodiments. Accordingly, the present invention may be practiced withother computer system configurations.

Conditional language used herein, such as, among others, “can,” “could,”“might,” “may,” “e.g.” and the like, unless specifically statedotherwise, or otherwise understood within the context as used, isgenerally intended to convey that certain embodiments include, whileother embodiments do not include, certain features, elements, and/orsteps. Thus, such conditional language is not generally intended toimply that features, elements and/or steps are in any way required forone or more embodiments or that one or more embodiments necessarilyinclude logic for deciding, with or without author input or prompting,whether these features, elements and/or steps are included or are to beperformed in any particular embodiment. The terms “comprising,”“including,” “having” and the like are synonymous and are usedinclusively, in an open-ended fashion, and do not exclude additionalelements, features, acts, operations and so forth. Also, the term “or”is used in its inclusive sense (and not in its exclusive sense) so thatwhen used, for example, to connect a list of elements, the term “or”means one, some or all of the elements in the list.

While certain example embodiments have been described, these embodimentshave been presented by way of example only and are not intended to limitthe scope of the inventions disclosed herein. Thus, nothing in theforegoing description is intended to imply that any particular feature,characteristic, step, module or block is necessary or indispensable.Indeed, the novel methods and systems described herein may be embodiedin a variety of other forms; furthermore, various omissions,substitutions and changes in the form of the methods and systemsdescribed herein may be made without departing from the spirit of theinventions disclosed herein. The accompanying claims and theirequivalents are intended to cover such forms or modifications as wouldfall within the scope and spirit of certain of the inventions disclosedherein.

What is claimed is:
 1. A system for deployment of an electronically presented content item comprising: one or more computing devices; and one or more memories having stored thereon computer-executable instructions that, upon execution, cause the system to perform operations comprising: receiving an indication that the content item is ready for deployment, wherein the content item is deployed using a plurality of content item instances, and wherein one or more of the plurality of content item instances is configurable to have multiple simultaneously assigned user sessions; installing, based at least in part on the indication, at least a first content item instance as an image on a first virtual machine instance; detecting a condition associated with allocating an additional virtual machine instance to the plurality of content item instances; allocating, based at least in part on the condition, the additional virtual machine instance to the plurality of content item instances; and copying the image onto the additional virtual machine instance.
 2. The system of claim 1, wherein the condition associated with allocating comprises at least one of determining that a total number of unoccupied user sessions for the plurality of content item instances has met or dropped below a particular quantity or determining that an average number of unoccupied user sessions for the plurality of content item instances has met or dropped below a particular quantity.
 3. The system of claim 1, wherein the operations further comprise: detecting a condition associated with de-allocating a virtual machine instance from the plurality of content item instances; de-allocating, based at least in part on the condition, the virtual machine instance from the plurality of content item instances; and performing at least one of terminating or re-purposing virtual machine instance.
 4. The system of claim 3, wherein the condition associated with de-allocating comprises at least one of determining that a total number of unoccupied user sessions for the plurality of content item instances meets or exceeds a particular quantity or determining that an average number of unoccupied user sessions for the plurality of content item instances meets or exceeds a particular quantity.
 5. The system of claim 1, wherein the content item is created using an SDK associated with a service hosting the plurality of content item instances.
 6. A method for deployment of an electronically presented content item comprising: receiving an indication that the content item is ready for deployment, wherein the content item is deployed using a plurality of content item instances, and wherein one or more of the plurality of content item instances is configurable to have multiple simultaneously assigned user sessions; installing, based at least in part on the indication, at least a first content item instance as an image on a first virtual machine instance; receiving a plurality of requests for users to access the content item; and copying, based at least in part on the plurality of requests, the image onto one or more other virtual machine instances.
 7. The method of claim 6, further comprising: detecting a condition associated with allocating an additional virtual machine instance to the plurality of content item instances; allocating, based at least in part on the condition, the additional virtual machine instance to the plurality of content item instances; and copying the image onto the additional virtual machine instance.
 8. The method of claim 7, wherein the condition comprises at least one of determining that a total number of unoccupied user sessions for the plurality of content item instances has met or dropped below a particular quantity or determining that an average number of unoccupied user sessions for the plurality of content item instances has met or dropped below a particular quantity.
 9. The method of claim 6, further comprising: detecting a condition associated with de-allocating a virtual machine instance from the plurality of content item instances; de-allocating, based at least in part on the condition, the virtual machine instance from the plurality of content item instances; and performing at least one of terminating or re-purposing virtual machine instance.
 10. The method of claim 9, wherein the condition comprises at least one of determining that a total number of unoccupied user sessions for the plurality of content item instances meets or exceeds a particular quantity or determining that an average number of unoccupied user sessions for the plurality of content item instances meets or exceeds a particular quantity.
 11. The method of claim 6, further comprising authenticating the users for which the plurality of requests is received.
 12. The method of claim 6, further comprising determining, based at least in part on stored information, that the users are entitled to access the content item.
 13. The method of claim 6, wherein at least two of the plurality of content item instances execute on a single virtual machine instance.
 14. The method of claim 6, wherein the content item is created using an SDK associated with a service hosting the plurality of content item instances.
 15. The method of claim 6, wherein the content item is a video game.
 16. One or more non-transitory computer-readable storage media having stored thereon instructions that, upon execution on at least one compute node, cause the at least one compute node to perform operations comprising: receiving an indication that an electronically presented content item is ready for deployment, wherein the content item is deployed using a plurality of content item instances, and wherein one or more of the plurality of content item instances is configurable to have multiple simultaneously assigned user sessions; installing, based at least in part on the indication, at least a first content item instance as an image on a first virtual machine instance; receiving a plurality of requests for users to access the content item; and copying, based at least in part on the plurality of requests, the image onto one or more other virtual machine instances.
 17. The one or more non-transitory computer-readable storage media of claim 16, wherein the operations further comprise: detecting a condition associated with allocating an additional virtual machine instance to the plurality of content item instances; allocating, based at least in part on the condition, the additional virtual machine instance to the plurality of content item instances; and copying the image onto the additional virtual machine instance.
 18. The one or more non-transitory computer-readable storage media of claim 17, wherein the condition comprises at least one of determining that a total number of unoccupied user sessions for the plurality of content item instances has met or dropped below a particular quantity or determining that an average number of unoccupied user sessions for the plurality of content item instances has met or dropped below a particular quantity.
 19. The one or more non-transitory computer-readable storage media of claim 16, wherein the operations further comprise: detecting a condition associated with de-allocating a virtual machine instance from the plurality of content item instances; de-allocating, based at least in part on the condition, the virtual machine instance from the plurality of content item instances; and performing at least one of terminating or re-purposing virtual machine instance.
 20. The one or more non-transitory computer-readable storage media of claim 19, wherein the condition comprises at least one of determining that a total number of unoccupied user sessions for the plurality of content item instances meets or exceeds a particular quantity or determining that an average number of unoccupied user sessions for the plurality of content item instances meets or exceeds a particular quantity.
 21. The one or more non-transitory computer-readable storage media of claim 16, wherein the operations further comprise authenticating the users for which the plurality of requests is received.
 22. The one or more non-transitory computer-readable storage media of claim 16, wherein the operations further comprise determining, based at least in part on stored information, that the users are entitled to access the content item.
 23. The one or more non-transitory computer-readable storage media of claim 16, wherein at least two of the plurality of content item instances execute on a single virtual machine instance.
 24. The one or more non-transitory computer-readable storage media of claim 16, wherein the content item is created using an SDK associated with a service hosting the plurality of content item instances.
 25. The one or more non-transitory computer-readable storage media of claim 16, wherein the content item is a video game. 